from camel.models import ModelFactory
from camel.storages import Neo4jGraph
from camel.types import ModelPlatformType
from camel.loaders import UnstructuredIO
from camel.agents import ChatAgent, KnowledgeGraphAgent

from dotenv import load_dotenv
import os

load_dotenv()
Model_Type = os.getenv("MODEL_TYPE")
Model_Api = os.getenv("ZHIPU_API_KEY")
Model_Url = os.getenv("MODEL_URL")
model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI,
    model_type=Model_Type,
    api_key=Model_Api,
    url=Model_Url
)

text = """
CAMEL和DATAWHALE是两个活跃的AI开源社区。
CAMEL致力于推动人工智能技术的发展，帮助开发者更好地进行AI研究和应用。
DateWhale通过开源项目和社区活动，促进知识分享和技术交流。这两个社区都为AI领域的创新和进步做出了重要贡献。
"""
uio = UnstructuredIO
kg_agent = KnowledgeGraphAgent(model=model)

#从给定文本创建一个元素
element_example = uio.create_element_from_text(
    text=text,element_id="0"
)

#让知识图谱agent提取节点和关系信息
# answer_element = kg_agent.run(element_example,parse_graph_elements=False)   #parse_graph_elements参数为False时输出字符串，为True返回一个自定义的GraphElement


#在neo4j存储信息

n4j = Neo4jGraph(
    url = 'bolt://localhost:7687',
    username='neo4j',
    password='Shao123.',
)

graph = kg_agent.run(element_example,parse_graph_elements=True)

n4j.add_graph_elements(graph_elements=[graph])
